package ar.uade.distribuidas.tpo.srv.dao;


import java.io.File;
import java.io.FileWriter;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import ar.uade.distribuidas.tpo.base.dominiodto.*;
import ar.uade.distribuidas.tpo.srv.delegado.BD;

//BORRRAR esta clase

public class CotizacionXmlDao {
	
	/*
	 static Document doc;
     static final String ARCHIVO = "XML_Cotizacion_Numero";
     /*
     public static CotizacionXmlDao getInstance(){
 		if(instance == null){
 			instance = new CotizacionXmlDao();
 			instance.createDocument();
 		}
 		return instance;
 	}
	*/
	/*
	private CotizacionXmlDao() {
	}
	
	private static void parseCotizacion(CotizacionDTO cot){
		Element cotElem = doc.createElement("Cotizacion");
		        
		doc.appendChild(cotElem);
		cotElem.setAttribute("numero", String.valueOf(cot.getId()));
		
		Element auxElemPadre = cotElem.getOwnerDocument().createElement("Vigencia");
		Element auxElemHijo = cotElem.getOwnerDocument().createElement("Fecha");
		cotElem.appendChild(auxElemPadre);
		auxElemPadre.appendChild(auxElemHijo);
		auxElemHijo.setTextContent(cot.getFechaDesde().toString());
		auxElemHijo = cotElem.getOwnerDocument().createElement("Termino");
		auxElemHijo.setTextContent(String.valueOf(cot.getDiasDeVigencia()));
		auxElemPadre.appendChild(auxElemHijo);
		
		auxElemPadre = cotElem.getOwnerDocument().createElement("Cliente");
		auxElemHijo = cotElem.getOwnerDocument().createElement("Cuil");
		cotElem.appendChild(auxElemPadre);
		auxElemPadre.appendChild(auxElemHijo);
		auxElemHijo.setTextContent(String.valueOf(cot.getCliente().getCuil()));
		auxElemHijo = cotElem.getOwnerDocument().createElement("RazonSocial");
		auxElemHijo.setTextContent(cot.getCliente().getNombre());
		auxElemPadre.appendChild(auxElemHijo);
		
		for(CondicionDeVentaDTO c : cot.getCondicionesDeVentaDTO()) {
			CondicionDeVentaXmlParser.escribirCondicionDeVenta(c, cotElem);
		}
		
		parseItemCotizacion(cot.getItemCotizacionDTO(), cotElem);
		
		auxElemHijo.setTextContent(String.valueOf(cot.getCliente().getCuil()));
		auxElemHijo = cotElem.getOwnerDocument().createElement("RazonSocial");
		auxElemHijo.setTextContent(cot.getCliente().getNombre());
		auxElemPadre.appendChild(auxElemHijo);
		
		
	}
	
	
/*
	private void createDocument() {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder;
		try {
			builder = factory.newDocumentBuilder();
			doc = builder.parse(ARCHIVO);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
*/
/*
	public static void generarCotizacionXML(CotizacionDTO cotizacion) {
		try{
            //Crea instancia de DocumentBuilderFactory
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setValidating(false);
            //obtiene objeto DocumentBuilder
            DocumentBuilder docBuilder = factory.newDocumentBuilder();
            //Crea documento DOM en blanco
                    doc = docBuilder.newDocument();
            //crea el elemento ra�z y lo agrega al documento
              //  Element root = doc.createElement("raiz");
               // doc.appendChild(root);
                  //crea comentario y lo agrega a continuaci�n
                    Comment comment = doc.createComment("COTIZACION DE RODAMIENTOS");
                    doc.appendChild(comment);
            
                
    			parseCotizacion(cotizacion);
    			
                
               saveDomXML(cotizacion.getId());

        }catch(Exception e){
            System.out.println(e.getMessage());
        }
			
	}
	
	private static void saveDomXML(Long long1) {
        //Crea instancia de TransformerFactory
    TransformerFactory tranFactory = TransformerFactory.newInstance(); 
    Transformer tran;
        try {
                //Crea un objeto Transformer
                tran = tranFactory.newTransformer();
                //interface Source implementada con un documento dom 
            Source src = new DOMSource(doc); 
            //interface Result implementada con un subtipo de OutputStream 
            Result dest = new StreamResult(new FileWriter(new File(ARCHIVO+long1+".xml")));
            //m�todo transform que enlaza el documento con el stream
            tran.transform(src, dest); 
            System.out.print("archivo creado con el nombre "+ARCHIVO+long1+".xml");                  
        } catch (Exception e) {
                e.printStackTrace();
        } 
}
	


	private static void parseItemCotizacion(List<ItemCotizacionDTO> listaItems, Element root) {
		Element auxElemPadre, auxElemHijo, auxNieto;
		
		for(ItemCotizacionDTO item : listaItems){
			auxElemPadre = root.getOwnerDocument().createElement("Referencia");
			auxElemHijo = root.getOwnerDocument().createElement("SolicitudCotizacion");
			root.appendChild(auxElemPadre);
			auxElemPadre.appendChild(auxElemHijo);
			
			SolicitudDeCotizacionDTO sc = BD.getInstance().get(item.getSolicitudId());
			ItemSolicitudDeCotizacionDTO isc = BD.getInstance().getItemSolicitudDeCotizacion(item.getItemSolicitudId());
			
			auxNieto = auxElemHijo.getOwnerDocument().createElement("Numero");
			auxElemHijo.appendChild(auxNieto);
			auxNieto.setTextContent(String.valueOf(sc.getId()));
			
			auxNieto = auxElemHijo.getOwnerDocument().createElement("Fecha");
			auxElemHijo.appendChild(auxNieto);
			auxNieto.setTextContent(sc.getFecha().toString());
			
			auxElemHijo  = root.getOwnerDocument().createElement("Rodamientos");
			auxElemPadre.appendChild(auxElemHijo);
			auxNieto = auxElemHijo.getOwnerDocument().createElement("Item");
			auxNieto.setAttribute("serie", String.valueOf(isc.getRodamiento().getNroSerie()));
			auxElemHijo.appendChild(auxNieto);
			
			Element bisnieto = auxNieto.getOwnerDocument().createElement("Sufijo");
			bisnieto.setTextContent(isc.getRodamiento().getSufijo());
			auxNieto.appendChild(bisnieto);
			
			bisnieto = auxNieto.getOwnerDocument().createElement("Marca");
			bisnieto.setTextContent(isc.getRodamiento().getMarca());
			auxNieto.appendChild(bisnieto);

			bisnieto = auxNieto.getOwnerDocument().createElement("Origen");
			bisnieto.setTextContent(isc.getRodamiento().getPais());
			auxNieto.appendChild(bisnieto);
			
			bisnieto = auxNieto.getOwnerDocument().createElement("Precio");
			bisnieto.setTextContent(String.valueOf(item.getPrecio()));
			auxNieto.appendChild(bisnieto);
			
			bisnieto = auxNieto.getOwnerDocument().createElement("Cantidad");
			bisnieto.setTextContent(String.valueOf(isc.getCantidad()));
			auxNieto.appendChild(bisnieto);
		
		}
	
	}

*/
	
	 




}
